package ast;


import ast.terminais.BOOL;
import ast.terminais.DIGIT;
import ast.terminais.Identifier;
import ast.terminais.IntPositivo;
import ast.terminais.Inteiro;
import ast.terminais.Letter;
import ast.terminais.StringLiteral;
import ast.terminais.Tipo_denotador;

import ast.terminais.Tipo;
import ast.terminais.caracter;

public interface IVisitor {

	public Object visit(Program program, Object o);
	public Object visit(Header cabecalho, Object o);
	public Object visit(Corpo corpo, Object o);
	public Object visit(Corpo_return corpo, Object o);
	public Object visit(Identifier id, Object o);
	public Object visit(Declaracao_funcao declaracao_funcao, Object o);
	public Object visit(Declaracao_procedimento declaracao_procedimento, Object o);
	public Object visit(Declaracao_variaveis declaracao_variaveis, Object o);
	public Object visit(Lista_parametros lista_paramentros, Object o);
	public Object visit(Tipo tipo, Object o);
	public Object visit(List_Var_Array list_Var_Array, Object o);
	public Object visit(List_Var_Id list_Var_Id, Object o);
	public Object visit(Assign_command_id assign_command_id, Object o);
	public Object visit(Assign_command_id_array assign_command_id_array, Object o);
    //Object visit(Procedure_chamada procedure_chamada, Object o);
	public Object visit(Call_command call_command, Object o);
	public Object visit(If_Command If_command, Object o);
	public Object visit(For_Command for_command, Object o);
	public Object visit(While_Command while_command, Object o);
    public Object visit(Case_Command Case_command, Object o);
    public Object visit(WriteInt_Command writeInt_Command, Object o);
    public Object visit(WriteChar_Command writeChar_Command, Object o);
    public Object visit(WriteBool_Command writeBool_Command, Object o);
    public Object visit(Writeln writeBool_Command, Object o);
    public Object visit(WriteString writeBool_Command, Object o);
    public Object visit(List_Args list_Args, Object o);
    public Object visit(List_Number list_Number, Object o);
    public Object visit(List_Number_Range list_Number_Ranger, Object o);
    public Object visit(Expressao expression, Object o);
    public Object visit(Clause clause, Object o);
    public Object visit(Literal literal, Object o);
    public Object visit(Equal_Nequal equal_nequal, Object o);
    public Object visit(Aritmetic_Expression  ari, Object o);
    public Object visit(caracter car,Object o);
    public Object visit(BOOL b,Object o);
	public Object visit(Inteiro inteiro, Object o);
	public Object visit(StringLiteral stringLiteral, Object o);
	public Object visit(IntPositivo intPositivo, Object o);
	public Object visit(Termo termo, Object o);
	public Object visit(Id_array id_array, Object o);
	public Object visit(Letter letter, Object o);
	public Object visit(DIGIT digit, Object o);
	public Object visit(Declaracao declaracao, Object o);
	public Object visit(Lista_comandos lista_comandos, Object o);
	public Object visit(Tipo_denotador tipo_denotador, Object o);
	public Object visit(Exp_atomica exp_atomica, Object o);
	public Object visit(Exp_negacao exp_negacao, Object o);

    

}
